#ifndef __USART_COMM_H
#define __USART_COMM_H

#ifdef __cplusplus
extern "C" {
#endif

#include "stm32f1xx_hal.h"  // 确保已包含HAL库头文件
#include <stdint.h>
#include <string.h>

// 数据包结构体定义
#pragma pack(push, 1)
typedef struct {
    uint8_t header;     // 包头(0xAA)
    uint8_t cmd;        // 命令字
    uint8_t data[6];    // 数据
    uint8_t checksum;   // 校验和
} UsartComm_Packet_t;
#pragma pack(pop)

// 初始化函数
void UsartComm_Init(UART_HandleTypeDef *huart);

// 数据发送函数
void UsartComm_SendData(uint8_t cmd, const uint8_t* data, uint8_t length);

// 数据接收检查
uint8_t UsartComm_DataAvailable(void);

// 获取接收数据
void UsartComm_GetData(uint8_t* cmd, uint8_t* data, uint8_t* length);

// 需要在main.c中调用的中断处理函数
void UsartComm_RxCpltCallback(UART_HandleTypeDef *huart);

#ifdef __cplusplus
}
#endif

#endif 